<?php
App::uses('Controller', 'Controller');

class AppController extends Controller {

	//Carga de Ayudantes o Helpers
	var $helpers = array(
		'Html',
        'Form',
        'Javascript',
        'Ajax',
        'Session',
	);

	//Componentes de los Controladores
	var $components = array(
		'Auth',
        'Session',
        'RequestHandler',
        'Email',
	);

	//Aca se cargan los modelos a utilizar en un Controlador que se heredan en cada uno
	var $uses = array(

	);

	//Funcion para configurar el componente AUTH
	function auth(){

		//Ruta inicial.
		$this->Auth->actionPath = 'controllers/';
		//Le decimos a Auth que utilice el modelo Usuario, en lugar de User(por defecto para CakePHP)
		$this->Auth->userModel = 'Usuario';
		$this->Auth->authorize = 'actions';
		$this->Auth->fields = array('username' => 'login', 'password' => 'password');

		//Configuramos AuthComponent
		//La acción correspondiente al login.
		$this->Auth->loginAction = array('controller' => 'usuarios', 'action' => 'login');
		//La acción a la que se redirigirá una vez hecho el logout.
		$this->Auth->logoutRedirect = array('controller' => 'usuarios', 'action' => 'login');
		//La acción a la que se redirigirá una vez hecho el login.
		$this->Auth->loginRedirect = array('controller' => 'principal','action' => 'index');

		/*La siguiente línea permite el acceso sin restricción a toda la aplicación; debería ser utilizado
		solamente para pruebas y/o procesos temporales relacionados a ellas.*/
		$this->Auth->allowedActions = array('*');

		//Se definen las acciones a las que se permitirá el acceso irrestricto.
//		$this->Auth->allowedActions = array('controller' => 'usuarios', 'action' => 'logout');
		//Otra forma de declarar las acciones permitidas (en este caso, login y logout):
//		$this->Auth->allowedActions= array('login', 'logout');

		// Ahora, nos aseguramos de cerrar la sesión en caso que se deniegue el acceso vía Auth+Acl.
		/*
		if($this->action != 'login' && $this->action != 'logout')
		{
			$permisoActual= $this->Acl->check($this->Auth->user(), $this->name.'/'.$this->action);
			if ($permisoActual!=true)
				$this->redirect($this->Auth->logout());
		}*/

		$this->Auth->allow('*');
	}


	//este metodo se carga antes del llamado a cualquier otro metodo en un controlador
	function beforeFilter(){
		parent::beforeFilter();

		//llamando la funcion auth que hace requerir la session en el sistema
		$this->auth();

	}

	//Este metodo carga ante cada peticion de ajax el layout correspondiente de ajax.
	function beforeRender(){
        if( $this->RequestHandler->isAjax() ) {
            $this->layout = 'ajax';
            $this->autoRender = false;
            Configure::write('debug', 0);
        }

		if( $this->RequestHandler->isMobile() ) {
            preg_match('/' . REQUEST_MOBILE_UA . '/i', $_SERVER['HTTP_USER_AGENT'], $match);
		  if (!empty($match)) {
		    //echo pr($_SERVER['HTTP_USER_AGENT']);
		  }
		  return false;
        }

		//pr($this->RequestHandler->getClientIP(). ' ' .$this->RequestHandler->getReferer());
    }

}